package com.yzf.demo.demo.DesignPattren.SingletonPattern.seriablesingleton;

import java.io.Serializable;

/**
 * Created by 于占峰 on 2020/2/27/027.
 * 反序列化导致破坏单例模式
 */
public class SeriableSingleton implements Serializable {
    //序列化就是把内存中的状态通过转换成字节码的形式
    //从而转换一个 I/O 流，写入其他地方（可以是磁盘、网络 I/O）
    //内存中的状态会永久保存下来
    //反序列化就是将已经持久化的字节码内容转换为 I/O 流
    //通过 I/O 流的读取，进而将读取的内容转换为 Java 对象
    //在转换过程中会重新创建对象 new
    public final static SeriableSingleton seriableSingleton = new SeriableSingleton();

    private SeriableSingleton() {
    }

    public static SeriableSingleton getInstance() {
        return seriableSingleton;
    }

    //加入readResolve 防止序列化破坏单例模式
    public Object readResolve() {
        return seriableSingleton;
    }
}
